/**
 * 项目名称:游戏类
 *
 * @Author: 夏国倩
 * @Date: 2023/9/16 9:14
 * @Copyright
 */
package itSystemCase3;
import java.util.Random;

public class Game{
    Player player;//玩家
    /*
    构造方法传入玩家信息
    @param player玩家
     */
    public Game(){
        this.player=player;
    }
    /*
    输出指定级别规定长度字符串
    @return 输出字符串，用于和用户输入作比较
     */
    public String printStr(){
        int strLength =LevelParam.levels[player.getLevelNo()-1].getStrLength();
        StringBuffer buffer=new StringBuffer();
        Random random=new Random();
        //通过循环生产要输出的字符串
        for (int i = 0; i < strLength; i++) {
            //1、产生随机数
            int rand= random.nextInt(strLength);
            //根据随机数拼接字符串
            switch (rand){
                case 0:
                    buffer.append(">");
                    break;
                case 1:
                    buffer.append("<");
                    break;
                case 2:
                    buffer.append("*");
                    break;
                case 3:
                    buffer.append("&");
                    break;
                case 4:
                    buffer.append("%");
                    break;
                case 5:
                    buffer.append("#");
                    break;
            }
        }
        //输出字符串
        System.out.println(buffer);
        //返回字符串用于和玩家输入相比较
        return buffer.toString();
    }
    /*
    判断玩家输入是否正确，并输出相应结果信息
    @param out 游戏输出的字符串
    @param in 玩家输入的字符串
     */
    public void printResult(String out,String in){
        //
        boolean flag;
        if (out.equals(in)){
             flag=true;
        }else {
             flag=false;
        }
        //如果输入正确
        if (flag){

            //todo 如果超时
            long currentTime=System.currentTimeMillis(); //得到系统的毫秒数
            if ((currentTime-player.getStartTime())/1000>LevelParam.levels[player.getLevelNo()- 1].getTimeLimit()) {
                System.out.println("您输入太慢了，已经超时，退出！");
                System.out.println(1); //1表示异常关闭程序
            }else { //如果没有超时
                //todo 计算当前积分，修改玩家当前积分
                player.setCurScore(player.getCurScore()+LevelParam.levels[player.getLevelNo()-1].getPerScore());
                //todo 计算已用时间

                //todo 输出当前积分，当前级别，已用时间
                System.out.println("输入正确，您的积分为："+player.getCurScore()+",您的级别为"
                        +(player.getLevelNo()+1)+",已用时间"+player.getStartTime()+"秒");
                //判断用户是否已经闯过最后一关
                if (player.getLevelNo()==6){
                    //todo 计算闯关分数
                    if (player.getCurScore()==100){
                        System.out.println("您已经闯关成功，成为绝世高手，恭喜！");
                        System.out.println(0); //0表示正常关闭程序
                    }
                }

            }
        }else { //输入错误
            System.out.println("输入错误，退出！");
            System.out.println(1);
        }
    }
}